<?php
$isReloadable = false;
require_once("../../../pers/inc.config.php");
require_once('../../_inc/inc.session.php');
require_once('../../_inc/funct.html.php');
require_once('../../_inc/funct.getFiles.php');

$aFiles = getFiles();	
if (!isset($aFiles[reqVar('cod')])) {
	backOnErr("fileView - manca cod");
	exit();
}
$nome = reqVar('cod');
$descr = ovfVx($aFiles,$nome,'descr');
reqDef('new_campo', reqVar('campo'));

if (reqvar('azione')=='salva') {
	$msgPag .= confIns();
}
if (!isset($_REQUEST['tipo'])) {
	$msgPag .= getReqVarCampo();
}
testaHtml('Gestione file', 'Modifica campo',$msgPag, 'gest');
echo getHtmlForm();
echo getHtmlHidden('azione','salva');
echo getHtmlHidden('xsn',XSN);
echo getHtmlHidden('cod');
echo getHtmlHidden('campo');
?>
<table border="0" cellpadding="3" cellspacing="1" width="100%" align='center'>
   <tr>
      <td class="cmd1" align="right">
         &nbsp;&nbsp;&nbsp;
         <a class="cmd1" href="javascript:document.frm1.submit();" >salva</a>
			<? echo cmdTorna('torna'); ?>
      </td>
   </tr>
</table>
<table class="tab1" border="0" cellpadding="3" cellspacing="1" width="100%" align='center'>
   <tr>
      <td class="lab1" width='20%' align='left'>File</td>
      <td class="txt1" width='20%' align='left'>
			<span style='font-family:lucida console,courier;'><?=$nome?></span>
		</td>
      <td class="txt1" width='60%' align='left'><?=$descr?></td>
   </tr>
   <tr>
      <td class="lab1" >Campo</td>
		<td class="txt1" colspan='2'>
			<?=getHtmlText('new_campo',40);?>
		</td>
   </tr>
   <tr>
      <td class="lab1" >Tipo</td>
		<td class="txt1" colspan='2'>
			<?
			$aTipi = array();
			$aTipi['varchar'] = 'stringa max 255';
			$aTipi['int'] = 'intero max 1.000.000.000';
			$aTipi['date'] = 'data';
			$aTipi['decimal'] = 'numero con decimali';
			$aTipi['text'] = 'Testo max 64.000';
			echo getHtmlSelect('tipo',$aTipi);
			echo "&nbsp;&nbsp;&nbsp;lunghezza:&nbsp;";
			echo getHtmlText('lungh',4);
			echo "&nbsp;&nbsp;&nbsp;decimali:&nbsp;";
			echo getHtmlText('decim',2);
			?>
		</td>
   </tr>
   <tr>
      <td class="lab1" >Default</td>
		<td class="txt1" colspan='2'>
			<?=getHtmlText('default',40);?>
		</td>
   </tr>
   <tr>
      <td class="lab1" >Nota</td>
		<td class="txt1" colspan='2'>
			<?=getHtmlText('nota',80);?>
		</td>
   </tr>
</table>
<?
echo "<file/>\n";
codaHtml();
exit();
function confIns() {
	global $objDB;
	$msg = '';
	
	$newCampo = strtolower(trim($_REQUEST['new_campo']));
	if (preg_match("/[^a-z0-9_]/",$newCampo)) {
		$msg .= "nome campo errato - solo lettere numeri e _<br>";
	}
	if ($newCampo=='') {
		$msg .= "nome campo mancante<br>";
	}
	$default = trim(reqVar('default'));
	$tipo = reqVar('tipo');
	switch(reqVar('tipo')) {
		case 'varchar':
			if (reqVarStr2num('lungh')==false 
			|| reqVarStr2num('lungh')<=0
			|| intval(reqVarStr2num('lungh'))!=reqVarStr2num('lungh')) {
				$msg .= "lunghezza errata o mancante<br>";
			}
			if (reqVar('decim')!='') {
				$msg .= "decimali non ammessi<br>";
			}
			$tipo .= "(".reqVarStr2num('lungh').")";
			break;
		case 'int':
			if (reqVar('lungh')!='') {
				$msg .= "lunghezza non ammessa<br>";
			}
			if (reqVar('decim')!='') {
				$msg .= "decimali non ammessi<br>";
			}
			if (reqVarStr2num('default')==false 
			|| intval(reqVarStr2num('lungh'))!=reqVarStr2num('lungh')) {
				$msg .= "default errato<br>";
			}
			$default = reqVarStr2num('default');
			break;
		case 'decimal':
			if (reqVarStr2num('lungh')==false 
			|| reqVarStr2num('lungh')<=0
			|| intval(reqVarStr2num('lungh'))!=reqVarStr2num('lungh')) {
				$msg .= "lunghezza errata o mancante<br>";
			}
			if (reqVarStr2num('decim')==false 
			|| reqVarStr2num('decim')<0
			|| intval(reqVarStr2num('lungh'))!=reqVarStr2num('lungh')) {
				$msg .= "decimali errati<br>";
			}
			if (reqVarStr2num('decim')>=reqVarStr2num('lungh')) {
				$msg .= "decimali superiori a lunghezza<br>";
			}
			if (reqVarStr2num('default')==false) {
				$msg .= "default errato<br>";
			}
			$default = reqVarStr2num('default');
			$tipo .= "(".reqVarStr2num('lungh').",".reqVarStr2num('decim').")";
			break;
		case 'date':
			if (reqVar('lungh')!='') {
				$msg .= "lunghezza non ammessa<br>";
			}
			if (reqVar('decim')!='') {
				$msg .= "decimali non ammessi<br>";
			}
			if ($default!='') {
				if (Str2date($default)==false) {
					$msg .= "default errato<br>";
				} else {
					$default = DMY2YMD($default);
				}
			}
			break;
		case 'text':
			if (reqVar('lungh')!='') {
				$msg .= "lunghezza non ammessa<br>";
			}
			if (reqVar('decim')!='') {
				$msg .= "decimali non ammessi<br>";
			}
			if (reqVar('default')!='') {
				$msg .= "default non ammesso<br>";
			}
			break;
	}
	if ($msg!='') return $msg;
	
	$sSql = "ALTER TABLE ".reqVar('cod')." CHANGE ".reqVar('campo')." $newCampo $tipo NOT NULL";
	if ($default!='') {
		$sSql .= " DEFAULT '$default'";
	}
	if (trim(reqVar('nota'))!='') {
		$sSql .= " COMMENT '".reqVarAS('nota')."'";
	}
	$objDB->query($sSql,"addCol",false);
	if ($objDB->errno("addCol")!=0) {
		return $sSql."<br>".$objDB->error("addCol");
	}
			
	//return "<pre>".print_r($objDB,1)."</pre>";
	header("Location: ".urlTorna("aggiunto campo $campo"));
	exit();
}
function getReqVarCampo() {
	global $objDB;
	$sSql = "SHOW FULL COLUMNS IN ".reqVar('cod');
	$objDB->query($sSql,"showCol");
	if ($objDB->errno("showCol")!=0) {
		return $objDB->error("showCol");
	}
	$aDefCampi = array();
	while($acX = $objDB->fetch("showCol")) {
		if ($acX['Field'] != reqVar('campo')) continue; 
		$aX = explode("(",strtolower($acX['Type']));
		$_REQUEST['tipo'] = $aX[0];
		$_REQUEST['default'] = $acX['Default'];
		$_REQUEST['nota'] = $acX['Comment'];
		$_REQUEST['lungh'] = '';
		$_REQUEST['decim'] = '';
		if (isset($aX[1])) {
			$aY = explode(",",substr($aX[1],0,-1));
			$_REQUEST['lungh'] = $aY[0];
			if (isset($aY[1])) {
				$_REQUEST['decim'] = $aY[1];
			}
		}
		if (reqVar('default')!='') {
			switch (reqVar('tipo')) {
				case 'date':
					$_REQUEST['default'] = reqVarStr2DMY('default');
					break;
				case 'decimal':
					$_REQUEST['default'] = reqVarStr2num('default');
					break;
			} 
		}
		return '';
	}
	backOnErr("campo '".reqVar('campo')."' non trovato");
	return "campo '".reqVar('campo')."' non trovato";
}
